/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：UICompositeComboBox.js<br>
 * 日期：2016年8月24日<br>
 * 作者: 林秀桃<br>
 * 功能：显示一个可编辑的文本框和下拉列表<br>
 *
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

window.makeNamespace(window,"Rainier.UI.V2");


/**
 * 类型名称：Rainier.UI.V2.UICompositeComboBox<br>
 * 类型功能：组合框声明<br>
 * 接口函数：<br>
 * 成员变量：<br>
 */
Rainier.UI.V2.UICompositeComboBox = Rainier.UI.V2.UIComposite.extend({

    NAME : "Rainier.UI.V2.UICompositeComboBox",

    /**
     * 函数名称：Rainier.UI.V2.UICompositeComboBox.init<br>
     * 函数功能：构造函数<br>
	 * 参数输入：objParentComposite	:  	父组件实例 一般为对应的panel或者layout中添加<br>
	 * 参数输入：objProperties		:	
	 * {
	 * 		valueField	: "ahdsjf",		//绑定到该组合框（ComboBox）的 value 上的基础数据的名称。
	 * 		textField   : "fwfeg",		//绑定到该组合框（ComboBox）的 text 上的基础数据的名称。
	 * }
	 * 注：具体参数信息参照easyUI官网该组件Properties。<br>	
	 * 异常信息：无<br>
     */
    init : function(objParentComposite,objProperties){
        //使用父类初始化子类对象
        this._super(objParentComposite,objProperties);
    },

    /**
     * 函数名称：Rainier.UI.V2.UICompositeComboBox.appendEventHandler<br>
     * 函数功能：添加事件代理<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：<br>
     */
	appendEventHandler : function(){		
		this.m_aEventList = [
		                     'onShowPanel',
		                     'onHidePanel',
		                     'onChange',
		                     'onResize',
		                     'onClickButton',
		                     'onClickIcon',
		                     'onBeforeValidate',
		                     'onValidate',
		                     'onBeforeLoad',
		                     'onLoadSuccess',
		                     'onLoadError',
		                     'onSelect',
		                     'onUnselect'
		                     ];
		this._super();
	},
	

    /**
     * 函数名称：Rainier.UI.V2.UICompositeComboBoxComboBox.createComposite<br>
     * 函数功能：创建组件<br>
	 * 参数输入：eleParent : 父组件的节点元素<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
     */
    createComposite : function(eleParent){
        this._super(eleParent);
        var newEle = this.CreateElement("selected",this.m_objProperties.id);
        eleParent.append(newEle);
        newEle.combobox(this.m_objProperties);
    },

    /**
     * 函数名称：Rainier.UI.V2.UICompositeComboBoxComboBox.callUiMethod<br>
     * 函数功能：添加事件代理<br>
	 * 参数输入：sMethod : 方法名称
	 * 参数输入：objArgs : 更具方法名称，在该类方法中查找对应参数，或easyUI官网对应组件的方法中检索
	 * 函数返回：根据调用方法，返回相应的数值<br>
	 * 异常信息：无<br>
     * 异常信息：<br>
     */
    callUiMethod : function(sMethod,objArgs){
        return this.getElement().combobox(sMethod,objArgs);
    },

    /**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.options<br>
	 * 函数功能：返回选项（options）对象。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：返回选择的对象<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    options : function(){
        return this.getElement().combobox('options');
    },
    
    /**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.getData<br>
	 * 函数功能：返回加载的数据。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    getData : function(){
        return this.getElement().combobox('getData');
    },
    
    /**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.loadData<br>
	 * 函数功能：加载本地列表数据。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    loadData : function(aData){
        return this.getElement().combobox('loadData',aData);
    },
    
    /**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.reload<br>
	 * 函数功能：请求远程的列表数据。传 'url' 参数来重写原始的 URL 值。。<br>
	 * 参数输入：url:'get_data.php'<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    reload : function(url){
    	if(url){
    		return this.getElement().combobox('reload',url);  		
    	}else{
    		return this.getElement().combobox('reload');  	
    	}
    },
    
    /**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.setValues<br>
	 * 函数功能：设置组合框（combobox）值的数组。<br>
	 * 参数输入：aValues:['001','002']<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    setValues : function(aValues){
        return this.getElement().combobox('setValues',aValues);
    },
    
    /**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.setValue<br>
	 * 函数功能：设置组合框（combobox）的值。。<br>
	 * 参数输入：sValue:'001'<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    setValue : function(sValue){
        return this.getElement().combobox('setValue',sValue);
    },
    
    /**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.clear<br>
	 * 函数功能：清除组合框（combobox）的值。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    clear : function(){
        return this.getElement().combobox('clear');
    },
    
    /**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.select<br>
	 * 函数功能：选择指定的选项。<br>
	 * 参数输入：sValue:'001'<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    select : function(sValue){
        return this.getElement().combobox('select',sValue);
    },
    
    /**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.unselect<br>
	 * 函数功能：返回选项（options）对象。<br>
	 * 参数输入：取消选择指定的选项。<br>
	 * 参数输出：sValue:'001'<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    unselect : function(sValue){
        return this.getElement().combobox('unselect',sValue);
    },   
	
    /**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.panel<br>
	 * 函数功能：返回下拉面板对象<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	panel : function(){
		return this.getElement().combobox('panel');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.textbox<br>
	 * 函数功能：返回文本框对象。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	textbox : function(){
		return this.getElement().combobox('textbox');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.resize<br>
	 * 函数功能：调整组件的宽度。<br>
	 * 参数输入：sWideh:100<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	resize : function(sWideh){
		return this.getElement().combobox('resize',sWideh);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.showPanel<br>
	 * 函数功能：显示下拉面板。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	showPanel : function(){
		return this.getElement().combobox('showPanel');
	}, 
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.destroy<br>
	 * 函数功能：销毁组件。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	destroy : function(){
		return this.getElement().combobox('destroy');
	},
	
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.hidePanel<br>
	 * 函数功能：隐藏下拉面板。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	hidePanel : function(){
		return this.getElement().combobox('hidePanel');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.disable<br>
	 * 函数功能：禁用组件。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	disable : function(){
		return this.getElement().combobox('disable');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.enable<br>
	 * 函数功能：启用组件。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	enable : function(){
		return this.getElement().combobox('enable');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.readonly<br>
	 * 函数功能：启用/禁用只读模式。该方法自版本 1.3.3 起可用。<br>
	 * 参数输入：mode: true/false<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	readonly : function(mode){
		return this.getElement().combobox('readonly',mode);
	},
	
	              
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.reset<br>
	 * 函数功能：重置组件的值。该方法自版本 1.3.2 起可用。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	reset : function(){
		return this.getElement().combobox('reset');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.getText<br>
	 * 函数功能：获取输入的文本。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	getText : function(){
		return this.getElement().combobox('getText');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.setText <br>
	 * 函数功能：设置文本值。<br>
	 * 参数输入：sText： 123<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	setText : function(sValue){
		return this.getElement().combobox('setText',sValue);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.getValues<br>
	 * 函数功能：获取组件的值的数组。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	getValues : function(){
		return this.getElement().combobox('getValues');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.getValue<br>
	 * 函数功能：获取组件的值<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	getValue : function(){
		return this.getElement().combobox('getValue');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.button<br>
	 * 函数功能：返回按钮对象。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：当前按钮对象<br>
	 * 异常信息：无<br>
	 */
	button : function(){
		return this.getElement().combobox('button');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.initValue<br>
	 * 函数功能：设置初始value值。<br>
	 * 参数输入：sValue：'sun'<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	initValue : function(sValue){
		return this.getElement().combobox('initValue',sValue);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeCombobox.getIcon<br>
	 * 函数功能：获取具体图表对象。<br>
	 * 参数输入：nIndex：5<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	getIcon : function(nIndex){
		return this.getElement().combobox('getIcon',nIndex);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.validate<br>
	 * 函数功能：验证输入的值。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	validate : function(){
		return this.getElement().combobox('validate');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.isValid<br>
	 * 函数功能：返回验证结果。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：true/false : boolean 类型的值true 表示进行了校验，false表示当前组件未进行校验<br>
	 * 异常信息：无<br>
	 */
	isValid : function(){
		return this.getElement().combobox('isValid');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.enableValidation<br>
	 * 函数功能：启用验证。该方法自版本 1.3.4 起可用。。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	enableValidation : function(){
		return this.getElement().combobox('enableValidation');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.disableValidation<br>
	 * 函数功能：禁用验证。该方法自版本 1.3.4 起可用。<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	disableValidation : function(){
		return this.getElement().combo('disableValidation');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeComboBox.resetValidation<br>
	 * 函数功能：重置验证<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	resetValidation : function(){
		return this.getElement().combobox('resetValidation');
	}
    
});
